// models/image_model.go
// =============================================================================
// | 包: models                                                              |
// | 功能: 定义应用程序的数据模型，映射数据库表结构                           |
// =============================================================================
package models

import "fmt"

// =============================================================================
// | 结构体: ImageModel                                                      |
// | 功能: 图片数据模型                                                      |
// | 说明: 映射数据库中的图片表，存储上传的图片信息                          |
// |----------------------------------------------------------------------------|
// | 字段: Model - Model - 基础模型，包含ID、CreatedAt、UpdatedAt字段         |
// | 字段: Filename - string - 文件名，最大64字符                            |
// | 字段: Path - string - 存储路径，最大256字符                              |
// | 字段: Size - int64 - 文件大小，单位为字节                               |
// | 字段: Hash - string - 文件哈希值，最大32字符，用于文件唯一性验证          |
// =============================================================================
type ImageModel struct {
	Model           // 嵌入基础模型（包含ID、时间戳等）
	Filename string `gorm:"size:64" json:"filename"` // 文件名，最大64字符
	Path     string `gorm:"size:256" json:"path"`    // 存储路径，最大256字符
	Size     int64  `json:"size"`                    // 文件大小
	Hash     string `gorm:"size:32" json:"hash"`     // 文件哈希值，最大32字符
}

// =============================================================================
// | 方法: WebPath                                                           |
// | 参数: 无                                                                |
// | 返回: string - 完整的Web访问路径                                        |
// | 功能: 生成图片的Web访问URL                                              |
// | 说明: 根据图片存储路径生成前端可直接访问的URL                           |
// |----------------------------------------------------------------------------|
// | 流程:                                                                   |
// | 1. 以斜杠开头拼接图片存储路径，生成Web可访问的URL                       |
// =============================================================================
func (i ImageModel) WebPath() string {
	return fmt.Sprintf("/%s", i.Path) // 返回完整的web访问路径
}
